package com.jiehfut.lifecycle;

import org.junit.jupiter.api.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestLifecycle {

    @Test
    public void testLifecycle(){
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("bean-lifecycle.xml");
        User user = context.getBean("user", User.class);
        System.out.println("6.bean 对象创建完成，可以使用 " + user + " ...");
        // 使用实现类 ClassPathXmlApplicationContext 对象调用 close() 方法
        context.close();

        /**
         1.调用无参构造创建 bean 对象...
         2.调用 setter 方法给 bean 对象设置属性值...
         4.bean 对象初始化，调用指定的初始化方法...
         6.bean 对象创建完成，可以使用 com.jiehfut.lifecycle.User@5851bd4f ...
         7.bean 对象销毁，调用指定的销毁方法...
         */


        /**
         1.调用无参构造创建 bean 对象...
         2.调用 setter 方法给 bean 对象设置属性值...
         3.后置处理器在 bean 初始化之前执行...
            user::com.jiehfut.lifecycle.User@5ed190be
         4.bean 对象初始化，调用指定的初始化方法...
         5.后置处理器在 bean 初始化之后执行...
            user::com.jiehfut.lifecycle.User@5ed190be
         6.bean 对象创建完成，可以使用 com.jiehfut.lifecycle.User@5ed190be ...
         2024-11-29 18:06:48 572 [main] DEBUG org.springframework.context.support.ClassPathXmlApplicationContext - Closing org.springframework.context.support.ClassPathXmlApplicationContext@3542162a, started on Fri Nov 29 18:06:48 CST 2024
         7.bean 对象销毁，调用指定的销毁方法...
         */
    }
}
